WebAssembly ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ์ฌ์ธต์ ์ผ๋ก ๋ถ์ํ๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ ์ด ๋ฉ์ปค๋์ฆ๊ณผ ์ด๊ฒ์ด ๋ณด์ ๋ฐ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ํ๊ตฌํฉ๋๋ค.
WebAssembly ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ: ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ ์ด
WebAssembly(Wasm)๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ทธ ์ด์์์ ๋ค์ดํฐ๋ธ์ ๊ฐ๊น์ด ์ฑ๋ฅ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ํ์ ์ ์ธ ๊ธฐ์ ๋ก ๋ถ์ํ์ต๋๋ค. Wasm์ ํต์ฌ ๊ฐ์ ์ ์ ์ ์๋ ์๋๋ฐ์ค ๋ด์์ ์ฝ๋๋ฅผ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ์คํํ๋ ๋ฅ๋ ฅ์ ์์ต๋๋ค. ์ด ์๋๋ฐ์ค์ ์ค์ํ ๊ตฌ์ฑ ์์๋ Wasm ๋ชจ๋์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๊ณ ์กฐ์ํ๋ ๋ฐฉ๋ฒ์ ๊ด๋ฆฌํ๋ WebAssembly ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ๋๋ค. ์ด ๋ฉ์ปค๋์ฆ์ ์ดํดํ๋ ๊ฒ์ ๊ฐ๋ฐ์, ๋ณด์ ์ฐ๊ตฌ์, ๊ทธ๋ฆฌ๊ณ WebAssembly์ ๋ด๋ถ ์๋ ๋ฐฉ์์ ๊ด์ฌ ์๋ ๋ชจ๋ ์ฌ๋์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
WebAssembly ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ?
WebAssembly๋ ์ ํ ๋ฉ๋ชจ๋ฆฌ(linear memory) ๊ณต๊ฐ ๋ด์์ ์๋ํ๋๋ฐ, ์ด๋ ๋ณธ์ง์ ์ผ๋ก ํฌ๊ณ ์ฐ์์ ์ธ ๋ฐ์ดํธ ๋ธ๋ก์
๋๋ค. ์ด ๋ฉ๋ชจ๋ฆฌ๋ JavaScript์์ ArrayBuffer๋ก ํํ๋์ด JavaScript์ WebAssembly ์ฝ๋ ๊ฐ์ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ ์ก์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. C๋ C++์ ๊ฐ์ ์์คํ
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ ํต์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ฌ๋ฆฌ, WebAssembly ๋ฉ๋ชจ๋ฆฌ๋ Wasm ๋ฐํ์ ํ๊ฒฝ์ ์ํด ๊ด๋ฆฌ๋๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฒฉ๋ฆฌ ๋ฐ ๋ณดํธ ๊ณ์ธต์ ์ ๊ณตํฉ๋๋ค.
์ ํ ๋ฉ๋ชจ๋ฆฌ๋ ํ์ด์ง ๋จ์๋ก ๋๋๋ฉฐ, ๊ฐ ํ์ด์ง๋ ์ผ๋ฐ์ ์ผ๋ก 64KB ํฌ๊ธฐ์ ๋๋ค. Wasm ๋ชจ๋์ ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฅํ์ฌ ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฒญํ ์ ์์ง๋ง, ์ถ์ํ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ์ค๊ณ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ ๋จํธํ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
WebAssembly ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ
WebAssembly ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ Wasm ๋ชจ๋์ด ์๋ํ ์ ์๋ ๊ฒฝ๊ณ๋ฅผ ์ ์ํฉ๋๋ค. ์ด๋ Wasm ๋ชจ๋์ด ๋ช ์์ ์ผ๋ก ์ ๊ทผ ๊ถํ์ด ๋ถ์ฌ๋ ๋ฉ๋ชจ๋ฆฌ์๋ง ์ ๊ทผํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ ์ฌ๋ฌ ๋ฉ์ปค๋์ฆ์ ํตํด ๋ฌ์ฑ๋ฉ๋๋ค:
- ์ฃผ์ ๊ณต๊ฐ ๊ฒฉ๋ฆฌ: ๊ฐ WebAssembly ๋ชจ๋์ ์์ฒด์ ๊ฒฉ๋ฆฌ๋ ์ฃผ์ ๊ณต๊ฐ์์ ์๋ํฉ๋๋ค. ์ด๋ ํ ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
- ๊ฒฝ๊ณ ๊ฒ์ฌ: Wasm ๋ชจ๋์ด ์ํํ๋ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ๊ฒฝ๊ณ ๊ฒ์ฌ๋ฅผ ๋ฐ์ต๋๋ค. Wasm ๋ฐํ์์ ์ ๊ทผํ๋ ค๋ ์ฃผ์๊ฐ ๋ชจ๋์ ์ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ํจํ ๋ฒ์ ๋ด์ ์๋์ง ํ์ธํฉ๋๋ค.
- ํ์ ์์ ์ฑ: WebAssembly๋ ๊ฐ๋ ฅํ ํ์ ์ธ์ด์ ๋๋ค. ์ด๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ๋ํ ํ์ ์ ์ฝ ์กฐ๊ฑด์ ๊ฐ์ ํ์ฌ ํ์ ํผ๋ ์ทจ์ฝ์ ์ ๋ฐฉ์งํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด๋ฌํ ๋ฉ์ปค๋์ฆ๋ค์ ํจ๊ป ์๋ํ์ฌ ๊ฒฌ๊ณ ํ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ์์ฑํ๊ณ , ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ๋ณด์ ์ทจ์ฝ์ ์ ์ํ์ ํฌ๊ฒ ์ค์ ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ ์ด ๋ฉ์ปค๋์ฆ
๋ช ๊ฐ์ง ์ฃผ์ ๋ฉ์ปค๋์ฆ์ด WebAssembly์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ ์ด์ ๊ธฐ์ฌํฉ๋๋ค:
1. ์ฃผ์ ๊ณต๊ฐ ๊ฒฉ๋ฆฌ
๊ฐ Wasm ์ธ์คํด์ค๋ ์์ฒด ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๋๋ค. ๋ค๋ฅธ Wasm ์ธ์คํด์ค๋ ํธ์คํธ ํ๊ฒฝ์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ด๋ ์ ์์ ์ธ ๋ชจ๋์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๋ถ๋ถ๊ณผ ์ง์ ์ ์ผ๋ก ๊ฐ์ญํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
์์: ๋์ผํ ์น ํ์ด์ง ๋ด์์ ์คํ๋๋ ๋ ๊ฐ์ Wasm ๋ชจ๋ A์ B๊ฐ ์๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ๋ชจ๋ A๋ ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๊ณ , ๋ชจ๋ B๋ ์ค๋์ค ๋์ฝ๋ฉ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ฃผ์ ๊ณต๊ฐ ๊ฒฉ๋ฆฌ ๋๋ถ์, ๋ชจ๋ A์ ๋ฒ๊ทธ๋ ์ ์ฑ ์ฝ๋๊ฐ ํฌํจ๋์ด ์๋๋ผ๋ ๋ชจ๋ A๋ ๋ชจ๋ B๊ฐ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ์ฐํ (๋๋ ์๋์ ์ผ๋ก) ์์์ํฌ ์ ์์ต๋๋ค.
2. ๊ฒฝ๊ณ ๊ฒ์ฌ
๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ์์ ์ ์, WebAssembly ๋ฐํ์์ ์ ๊ทผํ๋ ์ฃผ์๊ฐ ๋ชจ๋์ ํ ๋น๋ ์ ํ ๋ฉ๋ชจ๋ฆฌ์ ๊ฒฝ๊ณ ๋ด์ ์๋์ง ํ์ธํฉ๋๋ค. ์ฃผ์๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ๋ฐํ์์ ์์ธ๋ฅผ ๋ฐ์์์ผ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ์ผ์ด๋์ง ์๋๋ก ํฉ๋๋ค.
์์: Wasm ๋ชจ๋์ด 1MB์ ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ง์ฝ ๋ชจ๋์ด ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์ฃผ์(์: 1MB + 1๋ฐ์ดํธ)์ ์ฐ๊ธฐ๋ฅผ ์๋ํ๋ฉด, ๋ฐํ์์ ์ด ๊ฒฝ๊ณ ๋ฐ ์ ๊ทผ์ ๊ฐ์งํ๊ณ ์์ธ๋ฅผ ๋ฐ์์์ผ ๋ชจ๋์ ์คํ์ ์ค๋จ์ํต๋๋ค. ์ด๋ ๋ชจ๋์ด ์์คํ ์ ์์ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ฐ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
๊ฒฝ๊ณ ๊ฒ์ฌ์ ๋น์ฉ์ Wasm ๋ฐํ์ ๋ด์ ํจ์จ์ ์ธ ๊ตฌํ ๋๋ถ์ ์ต์ํ๋ฉ๋๋ค.
3. ํ์ ์์ ์ฑ
WebAssembly๋ ์ ์ ํ์ ์ธ์ด์ ๋๋ค. ์ปดํ์ผ๋ฌ๋ ์ปดํ์ผ ์๊ฐ์ ๋ชจ๋ ๋ณ์์ ๋ฉ๋ชจ๋ฆฌ ์์น์ ํ์ ์ ์๊ณ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ปดํ์ผ๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ๋ํ ํ์ ์ ์ฝ ์กฐ๊ฑด์ ๊ฐ์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Wasm ๋ชจ๋์ ์ ์ ๊ฐ์ ํฌ์ธํฐ๋ก ์ทจ๊ธํ๊ฑฐ๋ ๋ถ๋ ์์์ ๊ฐ์ ์ ์ ๋ณ์์ ์ธ ์ ์์ต๋๋ค. ์ด๋ ๊ณต๊ฒฉ์๊ฐ ํ์ ๋ถ์ผ์น๋ฅผ ์ ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๋ฌด๋จ ์ ๊ทผ์ ์ป๋ ํ์ ํผ๋ ์ทจ์ฝ์ ์ ๋ฐฉ์งํฉ๋๋ค.
์์: ๋ง์ฝ Wasm ๋ชจ๋์ด ๋ณ์ x๋ฅผ ์ ์๋ก ์ ์ธํ๋ค๋ฉด, ๊ทธ ๋ณ์์ ๋ถ๋ ์์์ ์ซ์๋ฅผ ์ง์ ์ ์ฅํ ์ ์์ต๋๋ค. Wasm ์ปดํ์ผ๋ฌ๋ ์ด๋ฌํ ์์
์ ๋ฐฉ์งํ์ฌ x์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ํ์
์ด ํญ์ ์ ์ธ๋ ํ์
๊ณผ ์ผ์นํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ ๊ณต๊ฒฉ์๊ฐ ํ์
๋ถ์ผ์น๋ฅผ ์
์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ์ํ๋ฅผ ์กฐ์ํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
4. ๊ฐ์ ํธ์ถ ํ ์ด๋ธ
WebAssembly๋ ํจ์ ํฌ์ธํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ๊ฐ์ ํธ์ถ ํ ์ด๋ธ์ ์ฌ์ฉํฉ๋๋ค. ํจ์ ์ฃผ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ ์ฅํ๋ ๋์ , WebAssembly๋ ํ ์ด๋ธ์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด๋ฌํ ๊ฐ์ ์ฐธ์กฐ๋ Wasm ๋ฐํ์์ด ํจ์๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ์ธ๋ฑ์ค๋ฅผ ๊ฒ์ฆํ ์ ์์ผ๋ฏ๋ก ๋ ๋ค๋ฅธ ๋ณด์ ๊ณ์ธต์ ์ถ๊ฐํฉ๋๋ค.
์์: Wasm ๋ชจ๋์ด ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ๋ผ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ๊ธฐ ์ํด ํจ์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ ์๋๋ฆฌ์ค๋ฅผ ์๊ฐํด ๋ณด์ญ์์ค. ํจ์ ์ฃผ์๋ฅผ ์ง์ ์ ์ฅํ๋ ๋์ , ๋ชจ๋์ ๊ฐ์ ํธ์ถ ํ ์ด๋ธ์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ฐํ์์ ์ธ๋ฑ์ค๊ฐ ํ ์ด๋ธ์ ์ ํจํ ๋ฒ์ ๋ด์ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ํธ์ถ๋๋ ํจ์๊ฐ ์์๋ ์๊ทธ๋์ฒ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ๊ฒ์ฆํ ์ ์์ต๋๋ค. ์ด๋ ๊ณต๊ฒฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์์์ ํจ์ ์ฃผ์๋ฅผ ์ฃผ์ ํ์ฌ ์คํ ํ๋ฆ์ ์ ์ดํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
๋ณด์์ ๋ฏธ์น๋ ์ํฅ
WebAssembly์ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ๋ณด์์ ์ค์ํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค:
- ๊ณต๊ฒฉ ํ๋ฉด ๊ฐ์: Wasm ๋ชจ๋์ ์๋ก ๊ทธ๋ฆฌ๊ณ ํธ์คํธ ํ๊ฒฝ์ผ๋ก๋ถํฐ ๊ฒฉ๋ฆฌํจ์ผ๋ก์จ, ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ๊ณต๊ฒฉ ํ๋ฉด์ ํฌ๊ฒ ์ค์ ๋๋ค. ํ๋์ Wasm ๋ชจ๋์ ์ ์ดํ๊ฒ ๋ ๊ณต๊ฒฉ์๋ ๋ค๋ฅธ ๋ชจ๋์ด๋ ํธ์คํธ ์์คํ ์ ์ฝ๊ฒ ์นจํดํ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ์ทจ์ฝ์ ์ํ: ๊ฒฝ๊ณ ๊ฒ์ฌ์ ํ์ ์์ ์ฑ์ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ, ํด์ ํ ์ฌ์ฉ(use-after-free) ์ค๋ฅ, ํ์ ํผ๋๊ณผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ์ทจ์ฝ์ ์ ํจ๊ณผ์ ์ผ๋ก ์ํํฉ๋๋ค. ์ด๋ฌํ ์ทจ์ฝ์ ์ C๋ C++์ ๊ฐ์ ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํํ์ง๋ง, WebAssembly์์๋ ์ ์ฉํ๊ธฐ๊ฐ ํจ์ฌ ๋ ์ด๋ ต์ต๋๋ค.
- ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ณด์ ๊ฐํ: ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ WebAssembly๋ฅผ ์น ๋ธ๋ผ์ฐ์ ์์ ์ ๋ขฐํ ์ ์๋ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํ ๋ ์์ ํ ํ๋ซํผ์ผ๋ก ๋ง๋ญ๋๋ค. WebAssembly ๋ชจ๋์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ธฐ์กด JavaScript ์ฝ๋์ ๊ฐ์ ์์ค์ ์ํ์ ๋ ธ์ถ์ํค์ง ์๊ณ ์์ ํ๊ฒ ์คํ๋ ์ ์์ต๋๋ค.
์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ
๋ฉ๋ชจ๋ฆฌ ๋ณดํธ๋ ๋ณด์์ ํ์์ ์ด์ง๋ง, ์ฑ๋ฅ์๋ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ํนํ ๊ฒฝ๊ณ ๊ฒ์ฌ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ WebAssembly๋ ์ฌ๋ฌ ์ต์ ํ๋ฅผ ํตํด ์ด๋ฌํ ์ค๋ฒํค๋๋ฅผ ์ต์ํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค:
- ํจ์จ์ ์ธ ๊ฒฝ๊ณ ๊ฒ์ฌ ๊ตฌํ: WebAssembly ๋ฐํ์์ ์ง์๋๋ ํ๋ซํผ์์ ํ๋์จ์ด ์ง์ ๊ฒฝ๊ณ ๊ฒ์ฌ์ ๊ฐ์ ํจ์จ์ ์ธ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๊ฒฝ๊ณ ๊ฒ์ฌ๋ฅผ ์ํํฉ๋๋ค.
- ์ปดํ์ผ๋ฌ ์ต์ ํ: WebAssembly ์ปดํ์ผ๋ฌ๋ ์ค๋ณต ๊ฒ์ฌ๋ฅผ ์ ๊ฑฐํ์ฌ ๊ฒฝ๊ณ ๊ฒ์ฌ๋ฅผ ์ต์ ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ปดํ์ผ๋ฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ํญ์ ๊ฒฝ๊ณ ๋ด์ ์๋ค๋ ๊ฒ์ ์๋ค๋ฉด, ๊ฒฝ๊ณ ๊ฒ์ฌ๋ฅผ ์์ ํ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
- ์ ํ ๋ฉ๋ชจ๋ฆฌ ์ค๊ณ: WebAssembly์ ์ ํ ๋ฉ๋ชจ๋ฆฌ ์ค๊ณ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ ๋จํธํ๋ฅผ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก, WebAssembly์์ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ์ ์ฑ๋ฅ ์ค๋ฒํค๋๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฏธ๋ฏธํ๋ฉฐ, ํนํ ์ ์ต์ ํ๋ ์ฝ๋์ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
์ฌ์ฉ ์ฌ๋ก ๋ฐ ์์
WebAssembly ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค:
- ์ ๋ขฐํ ์ ์๋ ์ฝ๋ ์คํ: WebAssembly๋ ์น ๋ธ๋ผ์ฐ์ ์์ ์ 3์ ๋ชจ๋์ด๋ ํ๋ฌ๊ทธ์ธ๊ณผ ๊ฐ์ ์ ๋ขฐํ ์ ์๋ ์ฝ๋๋ฅผ ์์ ํ๊ฒ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
- ๊ณ ์ฑ๋ฅ ์น ์ ํ๋ฆฌ์ผ์ด์ : WebAssembly๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ฒฝ์ํ ์ ์๋ ๊ณ ์ฑ๋ฅ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๊ฒ์, ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋๊ตฌ, ๊ณผํ ์๋ฎฌ๋ ์ด์ ๋ฑ์ด ๊ทธ ์์ ๋๋ค.
- ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ : WebAssembly๋ ํด๋ผ์ฐ๋ ํจ์๋ ๋ง์ดํฌ๋ก์๋น์ค์ ๊ฐ์ ์๋ฒ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ์๋ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ์์ ํ๊ณ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
- ์๋ฒ ๋๋ ์์คํ : WebAssembly๋ ๋ณด์๊ณผ ์์ ์ ์ฝ์ด ์ค์ํ ์๋ฒ ๋๋ ์์คํ ์์๋ ์ ์ ๋ ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
์์: ๋ธ๋ผ์ฐ์ ์์ C++ ๊ฒ์ ์คํํ๊ธฐ
๋ณต์กํ C++ ๊ฒ์์ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํํ๊ณ ์ถ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. C++ ์ฝ๋๋ฅผ WebAssembly๋ก ์ปดํ์ผํ์ฌ ์น ํ์ด์ง์ ๋ก๋ํ ์ ์์ต๋๋ค. WebAssembly ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ๊ฒ์ ์ฝ๋๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ ์์คํ ์ ๋ค๋ฅธ ๋ถ๋ถ์ ์ ๊ทผํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ์ ๋ณด์์ ์์์ํค์ง ์๊ณ ๊ฒ์์ ์์ ํ๊ฒ ์คํํ ์ ์์ต๋๋ค.
์์: ์๋ฒ ์ธก WebAssembly
Fastly๋ Cloudflare์ ๊ฐ์ ํ์ฌ๋ค์ ์ฃ์ง์์ ์ฌ์ฉ์ ์ ์ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด ์๋ฒ ์ธก์์ WebAssembly๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ๊ฐ ์ฌ์ฉ์์ ์ฝ๋๋ฅผ ๋ค๋ฅธ ์ฌ์ฉ์ ๋ฐ ๊ธฐ๋ณธ ์ธํ๋ผ๋ก๋ถํฐ ๊ฒฉ๋ฆฌํ์ฌ, ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ์คํํ๊ธฐ ์ํ ์์ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค.
ํ๊ณ ๋ฐ ํฅํ ๋ฐฉํฅ
WebAssembly ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ์น ๋ณด์์์ ์ค์ํ ์ง์ ์ด์ง๋ง, ํ๊ณ๊ฐ ์๋ ๊ฒ์ ์๋๋๋ค. ๊ฐ์ ์ด ํ์ํ ๋ช ๊ฐ์ง ์ ์ฌ์ ์ธ ์์ญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ธ๋ถํ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ ์ด: ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ๊ฐ๋ต์ ์ธ ์์ค์ ์ ๊ทผ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค. ํน์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ํ ์ ๊ทผ์ ์ ํํ๊ฑฐ๋ ๋ค๋ฅธ ๋ชจ๋์ ๋ค๋ฅธ ์์ค์ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ด, ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ๋ํ ๋ ์ธ๋ถํ๋ ์ ์ด๊ฐ ํ์ํ ์ ์์ต๋๋ค.
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ง์: WebAssembly๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฒฉ๋ฆฌํ์ง๋ง, ๋ค์ค ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ฐ์ด ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ํฅํ WebAssembly ๋ฒ์ ์๋ ์ ์ ํ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ๊ณผ ํจ๊ป ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ง์์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ํ๋์จ์ด ์ง์ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ: Intel MPX์ ๊ฐ์ ํ๋์จ์ด ์ง์ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด WebAssembly ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ๋ณด์๊ณผ ์ฑ๋ฅ์ ๋์ฑ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
WebAssembly ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ WebAssembly ๋ณด์ ๋ชจ๋ธ์ ์ค์ํ ๊ตฌ์ฑ ์์์ ๋๋ค. ์ฃผ์ ๊ณต๊ฐ ๊ฒฉ๋ฆฌ, ๊ฒฝ๊ณ ๊ฒ์ฌ, ํ์ ์์ ์ฑ์ ์ ๊ณตํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ์ทจ์ฝ์ ์ ์ํ์ ํฌ๊ฒ ์ค์ด๊ณ ์ ๋ขฐํ ์ ์๋ ์ฝ๋์ ์์ ํ ์คํ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. WebAssembly๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ, ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ์ ๋ํ ์ถ๊ฐ์ ์ธ ๊ฐ์ ์ ๋ณด์๊ณผ ์ฑ๋ฅ์ ํฅ์์์ผ ์์ ํ๊ณ ๊ณ ์ฑ๋ฅ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๋์ฑ ๋งค๋ ฅ์ ์ธ ํ๋ซํผ์ผ๋ก ๋ง๋ค ๊ฒ์ ๋๋ค.
WebAssembly ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋๋ฉ์ธ ์ด๋ฉด์ ์๋ฆฌ์ ๋ฉ์ปค๋์ฆ์ ์ดํดํ๋ ๊ฒ์ ๊ฐ๋ฐ์, ๋ณด์ ์ฐ๊ตฌ์, ๋๋ ๋จ์ํ ๊ด์ฌ ์๋ ๊ด์ฐฐ์์ด๋ , WebAssembly๋ฅผ ๋ค๋ฃจ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ํ์์ ์ ๋๋ค. ์ด๋ฌํ ๋ณด์ ๊ธฐ๋ฅ์ ์์ฉํจ์ผ๋ก์จ, ์ฐ๋ฆฌ๋ ์ ๋ขฐํ ์ ์๋ ์ฝ๋๋ฅผ ์คํํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ์ํ์ ์ต์ํํ๋ฉด์ WebAssembly์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ๋ฐํํ ์ ์์ต๋๋ค.
์ด ๊ธฐ์ฌ๋ WebAssembly์ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๊ทธ ๋ด๋ถ ์๋ ๋ฐฉ์์ ์ดํดํจ์ผ๋ก์จ ์ด ํฅ๋ฏธ๋ก์ด ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋ ์์ ํ๊ณ ๊ฒฌ๊ณ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.